package cn.zzf.algs.note.exercise.fundamental;

/**
 * 链表练习
 * @author GaoFeng
 * @date 2019/11/26 19:14
 */
public class Ex_LinkNode {

    public static void main(String[] args) {
        // 假设x是一条链表的某个结点且不是尾节点。下面这段代码的意思是什么
        // x.next = x.next.next 删除当前节点

        // 给出一段代码，删除链表的尾节点，其中首节点为first
        // while循环判断next，知道next为null，并记录前一个节点，执行first.next = null

        // 编写一个 delete()， 接受一个int参数k 。删除链表的第k个元素（如果它存在的话）
        // while循环, 记录前一个节点，index++, 当index == 1, 执行删除;

        // 编写一个find(), 接受一条链表和一个字符串key作为参数。如果链表中的某个结点的item域的值为key，则方法返回true, 否则返回false
        // 使用while循环

        // 假设x是一条链表中的某个结点, 下面这段代码做了什么:
        // t.next = x.next; // t.next = null, x.next = [node1, node2, node3, node4], t.next = [node1,....]
        // x.next = t; 插入结点t并使它成为x的后续结点, 更新x的next

        // 为什么下面这段代码和上一道题中的代码效果不同
        // x.next已经更新

        // 编写一个方法removeAfter(), 接受一个链表结点作为参数并删除该结点的后续结点
        // x.next = null

        // 编写一个insertAfter, 接受两个链表节点作为参数，将第二个节点插入链表并使之成为第一个结点的后续结点（如果两个参数为空则什么也不做）
        // 假设两个节点为想x,t, t.next = x.next; x.next = t;
        // 编写一方法remove(). 接受一条链表和一个字符串key作为参数，删除链表中所有item域为key的结点
        // 使用while循环遍历

        // 编写一个方法max()，接收一条链表的首结点作为参数，返回链表中键最大的节点的值

    }

}